Описание
Обновляет данные в объекте Recordset с помощью повторного
выполнения запроса, на котором базируется указанный объект.
наборЗаписей.Requery новыйЗапрос
Параметры
наборЗаписей
Объектная переменная, представляющая в
рабочей области ядра Microsoft Jet объект Recordset типа
динамического набора записей, статического набора записей или статического
набора записей с последовательным доступом или объект Recordset в рабочей
области ODBCDirect.
новыйЗапрос
Необязательный. Выражение
или переменная типа Variant, представляющая значение свойства Name
объекта QueryDef (только в рабочей области ядра Microsoft
Jet).
Замечания
Использование данного метода позволяет быть уверенным в том, что
объект Recordset содержит самые свежие данные. Данный метод заполняет
текущий объект Recordset либо с помощью запроса с текущими параметрами,
либо (в рабочей области Microsoft Jet) с использованием параметров
запроса, указанного в аргументе новыйЗапрос.
Если в рабочей области
ODBCDirect исходный запрос выполнялся в асинхронном режиме, метод Requery
также запускает асинхронный запрос.
Если не указать аргумент новыйЗапрос,
объект Recordset заполняется с использованием определения запроса и
параметров, применявшихся при начальном заполнении объекта Recordset. При
повторном заполнении учитываются любые изменения в базовых таблицах. Если объект
QueryDef не был использован для создания объекта Recordset, то
объект Recordset создается заново.
Если аргумент новыйЗапрос задает
исходный объект QueryDef, то объект Recordset обновляется с
использованием параметров, указанных в объекте QueryDef. При повторном
заполнении учитываются любые изменения в базовых таблицах. Для заполнения
объекта Recordset с новыми параметрами запроса необходимо указать другое
значение аргумента новыйЗапрос.
Если указать объект QueryDef, отличный
от использовавшегося для создания исходного объекта Recordset, то объект
Recordset создается заново.
После вызова метода Requery первая
запись объекта Recordset становится текущей записью.
Метод
Requery нельзя применять к объектам Recordset типа динамических
или статических наборов записей, у которых свойство Restartable имеет
значение False. Однако если указан необязательный аргумент новыйЗапрос,
то свойство Restartable игнорируется.
Если после применения метода
Requery оба свойства BOF и EOF объекта Recordset
имеют значение True, то в результате выполнения запроса не будет
возвращена ни одна запись, и объект Recordset не будет содержать
данных.
Пример
Следующая программа демонстрирует использование метода
Requery для обновления данных запроса после изменения базового источника
данных.
Sub RequeryX()
Dim dbsNorthwind As Database
Dim qdfTemp As QueryDef
Dim rstView As Recordset
Dim rstChange As Recordset
Set dbsNorthwind = OpenDatabase("Борей.mdb")
Set qdfTemp = dbsNorthwind.CreateQueryDef("", "PARAMETERS ПросмотрСтраны Text; " & _
"SELECT Имя, Фамилия, Страна FROM Сотрудники " & "WHERE Страна = [ПросмотрСтраны] " & _
"ORDER BY Фамилия")
qdfTemp.Parameters!ПросмотрСтраны = "USA"
Debug.Print "Исходный запрос, " & [ПросмотрСтраны] = USA"
Set rstView = qdfTemp.OpenRecordset
Do While Not rstView.EOF
Debug.Print " " & rstView!Имя & " " & rstView!Фамилия & ", " & rstView!Страна
rstView.MoveNext
Loop
' Изменение данных.
Set rstChange = dbsNorthwind.OpenRecordset("Сотрудники")
rstChange.AddNew
rstChange!Имя = "Nina"
rstChange!Фамилия = "Roberts"
rstChange!Страна = "USA"
rstChange.Update
rstView.Requery
Debug.Print "Повторный запрос после изменения источника"
Set rstView = qdfTemp.OpenRecordset
Do While Not rstView.EOF
Debug.Print " " & rstView!Имя & " " & rstView!Фамилия & ", " & rstView!Страна
rstView.MoveNext
Loop
' Восстанавливает исходные данные,
' измененные для демонстрации.
rstChange.Bookmark = rstChange.LastModified
rstChange.Delete
rstChange.Close
rstView.Close
dbsNorthwind.Close
End Sub